1. Field of the Invention
The present invention relates to methods of initializing storage windows in wireless communications systems, and in particular, the present invention discloses a method and apparatus for initializing a storage window in a wireless communications system that operates in Unacknowledged Mode (UM) and periodically retransmits previously transmitted packets to avoid unnecessary packet deletion so as to increase data receiving efficiency.
2. Description of the Prior Art
With advances in mobile communications device technologies in recent years, entertainment and information services applications have become increasingly widespread. In a 2nd generation (2G) mobile communications system, multimedia services are mostly limited to Short Messaging Services (SMS), with each text message containing no more than 160 characters. Only simple ring tones, ranging from about 3 to 20 Kbytes, and other small data files, can be downloaded. However, with development of 2.5G and 3G mobile networking technology, along with an increase in processor core performance, multimedia services in mobile communications have reached higher data transmission capacities, and many new types of multimedia services have been developed.
Taking Multimedia Broadcast/Multicast Service (MBMS) as an example, MBMS is established upon a foundation of a Universal Mobile Telecommunications System (UMTS), which is based on a Wideband Code Division Multiple Access (WCDMA) technology. The MBMS uses digital data packets to transmit service content from servers to multiple user devices. The MBMS also uses information broadcasting/multicasting technologies to provide data streaming and downloading services.
For the MBMS of the UMTS, the 3G Partnership Project (3GPP) defines a Radio Link Control (RLC) communications protocol, 3GPP TS 25.322 V6.4.0, which provides an “out of sequence Service Data Unit (SDU) delivery” function, so that a receiver operating in an Unacknowledged Mode (UM) can more efficiently process Protocol Data Units (PDUs) that are periodically retransmitted by a transmitter. Operating in the Unacknowledged Mode means that, although transmitted packets (PDUs) comprise sequence numbers (SNs), the receiver does not report a receiving status back to the transmitter when it receives or misses a packet. Therefore, in UM, the transmitter cannot ensure whether packets it has transmitted are successfully received.
To increase a probability that the receiver successfully receives packets, the transmitter can periodically retransmit packets that it has already transmitted, and the MBMS in UM uses this kind of periodic retransmission mechanism. When the RLC entity of the receiver in UM initiates the out of sequence SDU delivery function, the RLC entity recombines and delivers the SDUs to an upper protocol layer as fast as it can. In other words, even if a PDU with an earlier (lower) SN has not yet been successfully received, as long as a PDU comprising a complete SDU has been successfully received, the RLC entity delivers the complete SDU to the upper layer. In addition, when the out of sequence SDU delivery function is initiated, in order to allow the retransmitted SDUs to be reconstructed effectively by the receiver, a buffer of the receiver stores a PDU until all SDUs of the stored PDU have been reconstructed, after which the PDU is deleted from the buffer. Other than that, to maintain good receiving efficiency, the prior art deletes PDUs from the buffer in accordance with a storage window and a timer.
For the out of sequence SDU delivery function, the specification mentioned above also defines the following variables and parameters:                1. VR(UOH): A variable representing a highest of all SNs of all PDUs that have been received;        2. OSD_Window_Size: A parameter representing a size of a storage window; and        3. Timer_OSD: A timer representing a time spent waiting to receive a next PDU that is outside the storage window. When a PDU outside the storage window is received, the timer is started if it is not active or restarted if it is active. If the timer expires, the receiver deletes all PDUs in the storage window.        
According to the specification described above, after establishing or re-establishing the receiving entity of the receiver, and when the receiver receives a first PDU, based on a SN of the first PDU, the variable VR(UOH) is initialized and set to SN-1. If the SN of the PDU received by the receiver is outside of the storage window, meaning the SN of the PDU is not in a set of {x|VR(UOH)>=>VR(UOH)-OSD_Window_Size }, the variable VR(UOH) is set to be the SN of the PDU, i.e. VR(UOH)=SN. Additionally, if the timer Timer_OSD expires, the PDUs in the storage window are deleted.
Using the out of sequence SDU delivery function, the RLC entity reassembles SDUs and delivers them to the upper layer as soon as possible. However, in some cases, the prior art cannot efficiently reassembles SDUs. Please refer to the following explanation for further details. After the variable VR(UOH) of a receiver has been initialized, if the receiver temporarily moves out of service coverage of a transmitter, and the timer Timer_OSD expires before moving back into service coverage of the transmitter, the receiver deletes all PDUs in the storage window since the timer Timer_OSD has expired in order to avoid mistakenly combining PDUs received before moving out of service coverage with PDUs received after moving back into service coverage. However, this mechanism may actually prevent the receiver from correctly combining PDUs after moving back into service coverage of a base station (i.e. the transmitter).
For example, please refer to FIG. 1. FIG. 1 is a diagram of a UMTS providing a MBMS service in the prior art. In the example, the MBMS is operating in UM. For simplicity, FIG. 1 only shows the transmitting status at the transmitter and the receiving status at the receiver of PDUs that the transmitter sends to the receiver within a short timeframe. Assuming that the size of the storage window is 32, i.e. OSD_Window_Size=32, a transmitter periodically transmits PDUs with SN=32 to 63, SN=64 to 90, and SN=21 to 50 during modification periods T_mod1, T_mod2, and T_mod3, respectively. The three modification periods T_mod1, T_mod2, and T_mod3 are equal in length, and each comprises two repetition periods T_rep1 and T_rep2. Packets transmitted during the repetition period T_rep1 are retransmitted during the repetition period T_rep2, so that a probability of successful reception of all packets is increased. The modification period T_mod3 needs not follow right after the modification period T_mod2. After the receiver receives PDUs with SN=32 to 63 during modification period T_mod1, the receiver reassembles SDUs by combining the PDUs, delivers the reassembled SDUs to the upper layer, sets VR(UOH)=63, and sets a range of the storage window to be a set of {x|32<=x<=63}.
At time point t1, the receiver moves out of service coverage of the transmitter. After the timer Timer_OSD expires (not shown in FIG. 1), the receiver moves back into service coverage of the transmitter at time point t2. When the timer Timer_OSD expires, the receiver deletes all PDUs in storage window with the range of the storage window remaining at the set of {x|32<=x<=63}. In other words, the receiver moves out of service coverage of the transmitter at time point t1 and moves back into service coverage again at time point t2, and a deletion of PDUs in the storage window is initiated as the timer Timer_OSD expires while keeping the range of the storage window unchanged. After the receiver moves back into service coverage of the transmitter, during the repetition period T_rep1 of the modification period T_mod3, the receiver receives PDUs with SN=40 to 50. Since SN=40 to SN=50 falls within the range of the storage window, the PDUs with SN=40 to 50 are stored in the buffer. Thereafter, the receiver receives a PDU with SN=21 during the repetition time T_rep2 of the modification time T_mod3. Now, since the SN=21 is outside of the range of the storage window, the variable VR(UOH) is updated to be 21, such that the PDUs with SNs=40 to 50 fall outside of the storage window, causing the PDUs with SN=40 to 50 to be deleted. In other words, after the timer Timer_OSD expires, the receiver will not initialize the storage window, such that after the PDUs with SN=40 to 50 are received by the receiver, they are subsequently deleted from the buffer. This wastes system resources. If the receiver does not completely receive the PDUs with SN=40 to 50 during the repetition time T_rep2 of the modification time T_mod3, the receiver cannot reassemble the corresponding SDUs successfully.